package ioproject;

/**
 *
 * @author SIXTO
 */
public class Fraccion {
    private int signo;//0 es (+) 1 es (-)
    private Monomio numerador;
    private Monomio denominador;
    private int potencia;

    public void setSigno(int signo){
        this.signo= signo;
    }
    public void setNumerador (Monomio numerador){
        this.numerador = numerador;
        if (denominador==null){
            denominador= monomioEntero();
        }
    }
    public void setDenominador (Monomio denominador){
        this.denominador = denominador;
        if (numerador==null){
            numerador= monomioEntero();
        }
        else{
            simplificarFraccion();
        }
    }
    public void setPotencia (int potencia){
        this.potencia = potencia;
    }
    public int getSigno(){
    comprobarSigno();
        return signo;
    }
    public Monomio getNumerador(){
        return numerador;
    }
    public Monomio getDenominador(){
        return denominador;
    }
    public int getPotencia(){
        return potencia;
    }
    public Monomio monomioEntero(){
        Monomio monomioDenominador = new Monomio();
        monomioDenominador.monomioOne();
        return monomioDenominador;
    }

    public void signoFraccion (int signomultiplicador){
        if (signomultiplicador == this.getSigno() ){
            signo=1;
        }
        else{
            signo=0;
        }
    }
    public void comprobarSigno (){
        if(numerador.getSigno()==denominador.getSigno()){
        signo=0;
    }else{
        signo=1;
    }
        numerador.setSigno(0);
        denominador.setSigno(0);
        if(numerador.getCoeficiente()<0){
            numerador.setCoeficiente(numerador.getCoeficiente()*(-1));
        }
        if(denominador.getCoeficiente()<0){
            denominador.setCoeficiente(denominador.getCoeficiente()*(-1));
        }
    }

    public void multiplicarConstante(int constante){
        constante = constante*numerador.getCoeficiente();
        numerador.setCoeficiente(constante);
    }

    void simplificarFraccion(){// int numerador, int denominador ) {
	int numtemp = numerador.getCoeficiente();
	int dentemp = denominador.getCoeficiente();
	for (;; ) {
		if (dentemp > numtemp) {
				dentemp = dentemp % numtemp;
		}
		else{
			numtemp = numtemp % dentemp;
		}
		if (numtemp == 0) {
			numerador.setCoeficiente(numerador.getCoeficiente() / dentemp);//) = numerador.getCoeficiente() / dentemp;
			denominador.setCoeficiente(denominador.getCoeficiente() / dentemp);
			break;
		}
		if (dentemp == 0) {
			numerador.setCoeficiente( numerador.getCoeficiente() / numtemp);
			denominador.setCoeficiente( denominador.getCoeficiente() / numtemp);
			break;
		}
	}
}
public void elevarPotencia(){
    numerador.setPotencia(numerador.getPotencia()*potencia);
    numerador.setCoeficiente((int)Math.pow(numerador.getCoeficiente(), potencia));
    denominador.setPotencia(denominador.getCoeficiente()*potencia);
    denominador.setCoeficiente((int)Math.pow(numerador.getCoeficiente(), potencia) );
    potencia=1;
}
/*public void sumaFraccion(Monomio numerador1, Monomio denominador1){
    if(signo==0){

    }
   
            System.out.println("nose puede hacer la suma");
        //}}

public void multiplicacionFracion(Monomio numerador1, Monomio numerador2, Monomio denominador1, Monomio denominador2){
   if( numerador1.getLiteral()== denominador2.getLiteral()){

   }
}
*/


}
